
package paneles;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;


import arreglos.ProductoArrayList;

import entidades.Producto;



import principal.Principal;
import util.Utilitarios;



public class PanelListadoProductos extends JPanel implements ActionListener {

	private static final long serialVersionUID = 1L;
	
	 private JTable tablaListadoProductos;
	    private JButton btnCerrar;
	    private JButton btnActualizar;
	    private JScrollPane scrollPaneTablaListadoProductos;
	    private final String[] nombreColumnas = {"Codigo",
	        "Descripcion",
	        "Precio",
	        "Categoria",	    
	        "Unidad Medidad",
	        "Stock"	        
	      };
	    private final int numeroColumnasTabla = 6;
	    private DefaultTableModel datos;
	    private JInternalFrame listadoProductosJInternalFrame;
    
	private Principal appletPrincipal; 
	private JInternalFrame ventanaListadoProductos;

    public PanelListadoProductos(Principal pAppletPrincipal, JInternalFrame pVentanaListadoProductos) {
        try {
            setLayout(null);

            this.appletPrincipal = pAppletPrincipal;
            this.ventanaListadoProductos = pVentanaListadoProductos;

            Object[][] listadoClientes = ObtenerListadoProductos();

            setLayout(new BorderLayout());
            datos = new DefaultTableModel(listadoClientes, nombreColumnas);
            tablaListadoProductos = new JTable(datos);
            tablaListadoProductos.setDragEnabled(true);

            tablaListadoProductos.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

            scrollPaneTablaListadoProductos= new JScrollPane(tablaListadoProductos);
            scrollPaneTablaListadoProductos.setBounds(10, 0, 870, 520);
            scrollPaneTablaListadoProductos.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            scrollPaneTablaListadoProductos.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

            TableColumn columnaCodigo = tablaListadoProductos.getColumnModel().getColumn(0);
            columnaCodigo.setPreferredWidth(100);

            TableColumn columnaDescripcion = tablaListadoProductos.getColumnModel().getColumn(1);
            columnaDescripcion.setPreferredWidth(150);

            TableColumn columnaPrecio = tablaListadoProductos.getColumnModel().getColumn(2);
            columnaPrecio.setPreferredWidth(150);
          
            TableColumn columnaCategoria= tablaListadoProductos.getColumnModel().getColumn(3);
            columnaCategoria.setPreferredWidth(150);
    
            TableColumn columnaUnidadMedida= tablaListadoProductos.getColumnModel().getColumn(4);
            columnaUnidadMedida.setPreferredWidth(150);
            
            TableColumn columnaStock= tablaListadoProductos.getColumnModel().getColumn(5);
            columnaStock.setPreferredWidth(150);


            add(scrollPaneTablaListadoProductos);

            btnActualizar = new JButton("Actualizar");
            btnActualizar.setBounds(680, 525, 100, 30);
            btnActualizar.addActionListener(this);
            this.add(btnActualizar);

            btnCerrar = new JButton("Cerrar");
            btnCerrar.setBounds(790, 525, 90, 30);
            btnCerrar.addActionListener(this);
            this.add(btnCerrar);



        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public void actionPerformed(ActionEvent e) {
    	
        if (e.getSource() == btnCerrar) {

        	appletPrincipal.ventanaListadoProductos.setVisible(false);
        	appletPrincipal.ventanaListadoProductos = null;
        }

        if (e.getSource() == btnActualizar) {
            ActualizarListado();
        }
   
    }
    
    
    private void ActualizarListado() {
        DefaultTableModel datos = null;
        try {     
            
            Object[][] listadoClientes = ObtenerListadoProductos();

            setLayout(new BorderLayout());
            datos = new DefaultTableModel(listadoClientes, nombreColumnas);
        
            tablaListadoProductos.setModel(datos);

            TableColumn columnaCodigo = tablaListadoProductos.getColumnModel().getColumn(0);
            columnaCodigo.setPreferredWidth(100);

            TableColumn columnaDescripcion = tablaListadoProductos.getColumnModel().getColumn(1);
            columnaDescripcion.setPreferredWidth(150);

            TableColumn columnaPrecio = tablaListadoProductos.getColumnModel().getColumn(2);
            columnaPrecio.setPreferredWidth(150);
          
            TableColumn columnaCategoria= tablaListadoProductos.getColumnModel().getColumn(3);
            columnaCategoria.setPreferredWidth(150);
    
            TableColumn columnaUnidadMedida= tablaListadoProductos.getColumnModel().getColumn(4);
            columnaUnidadMedida.setPreferredWidth(150);
            
            TableColumn columnaStock= tablaListadoProductos.getColumnModel().getColumn(5);
            columnaStock.setPreferredWidth(150);


  
        } catch (Exception ex) {
        }
    }
    
   
    private Object[][] ObtenerListadoProductos() {
    	
        ProductoArrayList arrayListProductos = new ProductoArrayList();
        ArrayList<Producto> listadoProductos = null;
        int nummeroFilas = 0;
        int numColumnas = numeroColumnasTabla;
        int filaActual = 0;

        Object matrix[][] = null;
        try {
            
        	listadoProductos = new ArrayList<Producto>();
        	listadoProductos = arrayListProductos.ListadoProductos();

            nummeroFilas = listadoProductos.size();

            matrix = new Object[nummeroFilas][numColumnas];

            for (Producto producto : listadoProductos) {

                matrix[filaActual][0] = producto.getCodigo();
                matrix[filaActual][1] = producto.getDescripcion();
                matrix[filaActual][2] = producto.getPrecio();
                matrix[filaActual][3] = Utilitarios.FormatearCategotria(producto.getCategoria());        
                matrix[filaActual][4] = Utilitarios.FormatearUnidadMedida(producto.getUnidadMedida()); 
                matrix[filaActual][5] = producto.getStock();

                filaActual++;
            }


        } catch (Exception ex) {
        }
        return matrix;
    }
   
   
    
  
   


}
